/**
 * AI智能体插件常量配置文件
 * 统一管理所有常量、配置项和魔法数字，提高代码可维护性
 */

// ==================== 消息类型常量 ====================
export const MESSAGE_TYPES = {
  USER: 1,                    // 用户消息
  AI: 2,                      // AI回复
  SLOT: 3,                    // 插槽占位
  GREETING: 'greeting'        // 问候语消息
};

// ==================== 响应标签常量 ====================
export const RESPONSE_TAGS = {
  TEXT: '[TEXT]',
  JSON: '[JSON]',
  DONE: '[DONE]',
  SEEK: '[SEEK]',
  CHART_DATA: '[CHARTDATA]'
};

// ==================== 深度思考相关常量 ====================
export const DEEP_THINK = {
  MIN_TIME: 3,                // 最小思考时间（秒）
  MAX_TIME: 30,               // 最大思考时间（秒）
  UPDATE_INTERVAL: 1000,      // 时间更新间隔（毫秒）
  TOOL_ID: 1                  // 深度思考工具ID
};

// ==================== 联网搜索相关常量 ====================
export const WEB_SEARCH = {
  TOOL_ID: 2                  // 联网搜索工具ID
};

// ==================== WebSocket相关常量 ====================
export const WEBSOCKET = {
  RETRY_LIMIT: 3,             // 最大重连次数
  HEARTBEAT_INTERVAL: 30000,  // 心跳间隔（毫秒）
  CONNECT_TIMEOUT: 10000,     // 连接超时时间（毫秒）
  MESSAGE_TIMEOUT: 30000,     // 消息超时时间（毫秒）
  RECONNECT_DELAY: 2000       // 重连延迟（毫秒）
};

// ==================== UI组件相关常量 ====================
export const UI_CONSTANTS = {
  WIDE_SCREEN_WIDTH: 700,     // 大屏判断阈值（px）
  SCROLL_BOTTOM: 99999999,    // 滚动到底部的数值
  ANIMATION_DURATION: 300,    // 动画持续时间（毫秒）
  DEBOUNCE_DELAY: 100,        // 防抖延迟（毫秒）
  THROTTLE_DELAY: 300,        // 节流延迟（毫秒）
  STATUS_BAR_HEIGHT: 0        // 状态栏高度初始值
};

// ==================== 消息内容相关常量 ====================
export const MESSAGE_CONTENT = {
  MAX_LENGTH: 2000,           // 消息最大长度
  IMAGE_LOADING_STATES: ['生成中⠙', '生成中⠸', '生成中⠴', '生成中⠇'],
  DEFAULT_WAIT_TEXT: 'AI助手思考中',
  DEFAULT_GREETING: '您好！有什么可以帮助您的？'
};

// ==================== 分页相关常量 ====================
export const PAGINATION = {
  DEFAULT_PAGE_SIZE: 10,      // 默认每页条数
  INITIAL_PAGE: 0,            // 初始页码
  LOAD_MORE: 'loadmore',      // 可以加载更多
  LOADING: 'loading',         // 正在加载
  NO_MORE: 'nomore'           // 没有更多数据
};

// ==================== 支持的消息类型白名单 ====================
export const CONTENT_TYPES = {
  TEXT: 'text',
  CHART: 'chart',
  TABLES: 'tables',
  IMAGE: 'image',
  ACTIVITY: 'activity',
  COUPON: 'coupon',
  GOODS: 'goods',
  ACTION: 'action'
};

// ==================== 默认配置常量 ====================
export const DEFAULT_CONFIG = {
  // 默认主题色配置
  COLOR_THEME: {
    MAIN_COLOR: '#448ef7',
    ASSIST_COLOR: '#a8ecff',
    TEXT_MAIN_COLOR: '#1890ff',
    LINEAR_COLOR: '#27c9ff,#a8ecff',
    USER_TEXT_COLOR: '#FFFFFF',
    USER_BG_COLOR: '#448ef7',
    GUESS_CHANGE_COLOR: '#1890ff'
  },
  
  // 默认图标配置
  ICONS: {
    ACTION: 'https://img.yummall.cn/baiyetong/byt-uni-ui/action.svg',
    COPY: 'https://img.yummall.cn/baiyetong/byt-uni-ui/copy.svg',
    REFRESH: 'https://img.yummall.cn/baiyetong/byt-uni-ui/refresh.svg',
    GUESS_CHANGE: 'https://img.yummall.cn/baiyetong/byt-uni-ui/guess_change.svg',
    GUESS_ICON: 'https://img.yummall.cn/baiyetong/byt-uni-ui/guess_icon.svg',
    SEND_LEFT: 'https://img.yummall.cn/baiyetong/byt-uni-ui/sendLeft233.svg',
    SEND_RIGHT: 'https://img.yummall.cn/baiyetong/byt-uni-ui/sendBtn.svg',
    QUICK_CLOSE: 'https://img.yummall.cn/baiyetong/byt-uni-ui/quickIconClose.svg'
  },
  
  // 默认背景配置
  BACKGROUNDS: {
    GUESS_BG: 'url(https://img.yummall.cn/baiyetong/byt-uni-ui/whiteMengDefauld.svg)'
  },
  
  // 默认工具列表
  TOOL_LIST: [
    {
      id: 1,
      icon: 'https://img.yummall.cn/baiyetong/byt-uni-ui/shenduSikao.svg',
      activeiIcon: 'https://img.yummall.cn/baiyetong/byt-uni-ui/shenduSikao_avtive2.svg',
      name: '深度思考'
    },
    {
      id: 2,
      icon: 'https://img.yummall.cn/baiyetong/byt-uni-ui/lianwang.svg',
      activeiIcon: 'https://img.yummall.cn/baiyetong/byt-uni-ui/lianwang_avtive2.svg',
      name: '联网搜索'
    }
  ],
  
  // 默认更多工具列表
  MORE_LIST: [
    { id: 1, icon: 'https://img.yummall.cn/baiyetong/byt-uni-ui/paishe.svg', name: '拍摄' },
    { id: 2, icon: 'https://img.yummall.cn/baiyetong/byt-uni-ui/xiangce.svg', name: '相册' },
    { id: 3, icon: 'https://img.yummall.cn/baiyetong/byt-uni-ui/luyin.svg', name: '录音' },
    { id: 4, icon: 'https://img.yummall.cn/baiyetong/byt-uni-ui/wendang.svg', name: '文档' }
  ],
  
  // 默认提示项配置
  PROMPT_ITEMS: [
    { btnName: '功能', text: '图表' },
    { btnName: '功能', text: '商品' },
    { btnName: '功能', text: '优惠券' },
    { btnName: '功能', text: '活动' }
  ]
};

// ==================== Mock模式相关常量 ====================
export const MOCK_CONFIG = {
  // Mock回复模板
  RESPONSES: {
    DEFAULT: [
      '这是一个Mock模式的回复，用于演示对话功能。',
      '您可以继续发送消息来体验更多功能。',
      '在正式环境中，这里将是真实的AI回复。'
    ],
    DEEP_THINK: [
      '🤔 开始深度思考...',
      '让我仔细分析一下这个问题。',
      '经过深度分析，我认为这个问题需要从多个角度来考虑。',
      '✅ 深度思考完成！这是经过深度分析后的回答。'
    ],
    WEB_SEARCH: [
      '🔍 正在联网搜索相关信息...',
      '已找到相关资料，正在整理中...',
      '📊 基于最新网络信息，这里是搜索结果的分析。'
    ]
  },
  
  // Mock延迟设置
  DELAYS: {
    NORMAL: 300,              // 普通回复延迟
    DEEP_THINK: 500,          // 深度思考延迟
    WEB_SEARCH: 400,          // 联网搜索延迟
    STREAMING: 100            // 流式回复间隔
  },
  
  // Mock数据生成器配置
  GENERATORS: {
    CHART_SAMPLE: {
      type: 'bar',
      data: {
        labels: ['一月', '二月', '三月', '四月', '五月'],
        datasets: [{
          label: '示例数据',
          data: [12, 19, 3, 5, 2],
          backgroundColor: 'rgba(54, 162, 235, 0.2)',
          borderColor: 'rgba(54, 162, 235, 1)',
          borderWidth: 1
        }]
      }
    },
    GOODS_SAMPLE: {
      id: 'mock-goods-001',
      name: '示例商品',
      price: '¥99.99',
      image: 'https://img.yummall.cn/baiyetong/byt-uni-ui/default_avatar.png',
      description: '这是一个Mock模式下的示例商品'
    }
  }
};

// ==================== 错误码相关常量 ====================
export const ERROR_CODES = {
  NETWORK_ERROR: 'NETWORK_ERROR',
  WEBSOCKET_ERROR: 'WEBSOCKET_ERROR',
  API_ERROR: 'API_ERROR',
  VALIDATION_ERROR: 'VALIDATION_ERROR',
  TIMEOUT_ERROR: 'TIMEOUT_ERROR',
  AUTH_ERROR: 'AUTH_ERROR'
};

// ==================== 事件名称常量 ====================
export const EVENTS = {
  MESSAGE_SEND: 'message-send',
  MESSAGE_RECEIVE: 'message-receive',
  MESSAGE_SEND_FAILED: 'message-send-failed',
  ANSWER_STOPPED: 'answer-stopped',
  WEBSOCKET_CONNECTED: 'websocket-connected',
  WEBSOCKET_DISCONNECTED: 'websocket-disconnected',
  DEEP_THINK_START: 'deep-think-start',
  DEEP_THINK_END: 'deep-think-end',
  PROMPT_CLICKED: 'prompt-clicked'
};

// ==================== 存储键名常量 ====================
export const STORAGE_KEYS = {
  USER_TOKEN: 'bytToken',
  USER_INFO: 'userInfo',
  CHAT_HISTORY: 'chatHistory',
  APP_SETTINGS: 'appSettings'
};

// ==================== 正则表达式常量 ====================
export const REGEX_PATTERNS = {
  URL: /^https?:\/\/.+/,
  EMAIL: /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
  IMAGE_URL: /\.(jpg|jpeg|png|gif|webp)$/i,
  JSON_STRING: /^\{.*\}$|^\[.*\]$/,
  MARKDOWN_IMAGE: /!\[.*?\]\(.*?\)/g
};

// ==================== 环境变量常量 ====================
export const ENV_VARS = {
  MOCK_MODE: 'VITE_OPEN_MOKE',
  API_BASE_URL: 'VITE_API_BASE_URL',
  WS_BASE_URL: 'VITE_WS_BASE_URL'
};

// ==================== 平台判断常量 ====================
export const PLATFORMS = {
  H5: 'h5',
  MP_WEIXIN: 'mp-weixin',
  MP_ALIPAY: 'mp-alipay',
  MP_BAIDU: 'mp-baidu',
  MP_TOUTIAO: 'mp-toutiao',
  MP_QQ: 'mp-qq',
  APP: 'app-plus'
};

// ==================== 性能监控常量 ====================
export const PERFORMANCE = {
  LARGE_MESSAGE_THRESHOLD: 1000,    // 大消息阈值（字符数）
  RENDER_BATCH_SIZE: 20,            // 渲染批次大小
  SCROLL_THROTTLE: 16,              // 滚动节流间隔（约60fps）
  SEARCH_DEBOUNCE: 300              // 搜索防抖延迟
};

// ==================== 无障碍支持常量 ====================
export const ACCESSIBILITY = {
  ARIA_LABELS: {
    SEND_BUTTON: '发送消息',
    VOICE_INPUT: '语音输入',
    MORE_TOOLS: '更多工具',
    COPY_MESSAGE: '复制消息',
    RETRY_MESSAGE: '重新发送',
    SCROLL_TO_BOTTOM: '滚动到底部'
  },
  ROLES: {
    CHAT_LOG: 'log',
    SEARCH: 'search',
    BUTTON: 'button',
    TEXTBOX: 'textbox'
  }
};

// ==================== 开发调试常量 ====================
export const DEBUG = {
  LEVELS: {
    ERROR: 0,
    WARN: 1,
    INFO: 2,
    DEBUG: 3
  },
  PREFIXES: {
    ERROR: '❌',
    WARN: '⚠️',
    INFO: 'ℹ️',
    DEBUG: '🔧'
  }
};

// ==================== 导出全部常量 ====================
export default {
  MESSAGE_TYPES,
  RESPONSE_TAGS,
  DEEP_THINK,
  WEB_SEARCH,
  WEBSOCKET,
  UI_CONSTANTS,
  MESSAGE_CONTENT,
  PAGINATION,
  CONTENT_TYPES,
  DEFAULT_CONFIG,
  MOCK_CONFIG,
  ERROR_CODES,
  EVENTS,
  STORAGE_KEYS,
  REGEX_PATTERNS,
  ENV_VARS,
  PLATFORMS,
  PERFORMANCE,
  ACCESSIBILITY,
  DEBUG
}; 